/**
 * 游戏 暂停 场景
 */
class GamePauseScene
    extends GameBaseScene {

    /**
     * 单例实例
     */
    private static instance: GamePauseScene = null;

    /**
     * 编译顺序 标识
     */
    public static referenceFlag: string = GameEndScene.referenceFlag;

    /**
     * 相关属性
     */
    public static selfName: string = "GamePauseScene"; // 场景 名称
    public static tickFlag: boolean = false; // onTick 函数，开关 标识
    private backgroundShape: egret.Shape = null; // 透明 矢量 背景


    /**
     * 构造函数
     */
    public constructor() {
        super();
    }

    /**
     * 获取 单例实例
     */
    public static get getInstance(): GamePauseScene {

        if (GamePauseScene.instance == null) {
            GamePauseScene.instance = new GamePauseScene();
        }
        return GamePauseScene.instance;
    }

    /**
     * 初始化 函数
     */
    public init(): void {

        // 1.0 初始化 宽高 + 背景 矢量
        this.resetSceneSize(); // 设置 宽高
        this.drawBackgroundShape(); // 添加 透明 背景

        // 2.0 实例化 菜单选项 精灵对象
        let pauseTextOption: MenuOptionSprite = new MenuOptionSprite();
        pauseTextOption.init("default_pause_png", "active_pause_png");
        pauseTextOption.menuOptionName = CommonData.PAUSE_MENU_OPTION;
        this.menuOptionList.push(pauseTextOption); // 添加到 集合

        let mainTextOption: MenuOptionSprite = new MenuOptionSprite();
        mainTextOption.init("default_main_png", "active_main_png");
        mainTextOption.menuOptionName = CommonData.MAIN_MENU_OPTION;
        this.menuOptionList.push(mainTextOption); // 添加到 集合


        // 4.0 遍历 集合 添加到 显示列表
        let setHeightPosition: number = this.height / 2;

        for (let i = 0; i < this.menuOptionList.length; i++) {

            this.addChild(this.menuOptionList[i]); // 添加到 显示列表

            this.menuOptionList[i].anchorOffsetX = this.menuOptionList[i].width / 2; // 定义 锚点
            this.menuOptionList[i].anchorOffsetY = this.menuOptionList[i].height / 2;

            this.menuOptionList[i].scaleX = 5; // 定义 缩放
            this.menuOptionList[i].scaleY = 5;

            let addHeight: number = i * 100; // 定义 坐标
            this.menuOptionList[i].x = this.width / 2;
            this.menuOptionList[i].y = setHeightPosition + addHeight;
        }

        this.setActiveMenuOption(CommonData.PAUSE_MENU_OPTION);

        this.setInitCompleteFlag(true); // 更新 标识
    }

    /**
     * 绘制 透明背景
     */
    private drawBackgroundShape(): void {

        let getHeight: number = this.height;
        let getWidth: number = this.width;

        this.backgroundShape = new egret.Shape(); // 实例化 矢量 对象
        this.backgroundShape.graphics.beginFill(0x0000ff);
        this.backgroundShape.graphics.drawRect(0, 0, getWidth, getHeight);
        this.backgroundShape.graphics.endFill();
        this.backgroundShape.alpha = 0.3; // 设置 透明值

        this.addChild(this.backgroundShape);
    }


    /**
     * 心跳 函数
     */
    public onTick(): void {

        this.handleKeyDown(GamePauseScene.selfName);
    }


}